#include <SFML/Graphics/RenderWindow.hpp>
#include <nice2d/macros.h>
#include <nice2d/scene.h>
#include <nice2d/background.h>
#include <nice2d/imagedescriptor.h>
#include <nice2d/components/group.h>
#include <nice2d/components/spritestatus.h>
#include <nice2d/components/imagemanager.h>
#include <nice2d/util.h>
#include <nice2d/tilemap.h>
#include <nice2d/piece/piecescene.h>

#define SCENE_WIDTH  900.0f
#define SCENE_HEIGHT 680.0f

#define OFFSET 10

class UnitScene : public PieceScene
{
public:
    void onInitialed()override
    {
        setSceneBox({0.0f, 0.0f, SCENE_WIDTH, SCENE_HEIGHT});
        setBackground(Background::create("./../data/images/ground3.png", true));

        tileMap = TileMap::create(TileMapType::TileMapType_Hex);
        tileMap->init(13,9,96);
        tileMap->setTextVisible(true);

        tileMap->accept([](int32_t x, int32_t y, std::shared_ptr<Tile> tile)
        {
            tile->setOutlineColor(sf::Color(128,128,128));
            tile->setOutlineThickness(0.5f);
        });

        addChild(tileMap);
        setTileMap(tileMap);

        TextOption opt;
        opt.characterSize = 15;

        sf::Color spriteColor[] = {sf::Color::Red,sf::Color::Green,sf::Color::Blue};

        for(int i=0;i<12;i++)
        {
            auto piece = std::make_shared<Piece>(opt);
            piece->setHitPoint(3);
            piece->setAttack(2);
            piece->setDefense(5);
            piece->setMovement(4);
            piece->setBackgroundColor(sf::Color(140,140,140));
            piece->setSpriteColor(spriteColor[rand()%3]);
            piece->setSize(64,64);
            piece->addPieceIcon("./../data/icon/nato/units/infantry.png");
            piece->addPieceIcon("./../data/icon/nato/sizes/group.png");
            piece->setTextColor(sf::Color::White);
            addPiece(piece,rand()%13,rand()%9);
        }
    }
private:
    std::shared_ptr<TileMap> tileMap;
};

DECLARE_MAIN_FUNCTION_WITH_SCENE(SCENE_WIDTH, SCENE_HEIGHT, "unit14", UnitScene)
